public abstract class Vehicle
{
	protected static double length;
	protected static double width;
	protected static double maxVel;
	protected static double maxAcc;
	protected static double minAcc;
	protected static double maxSteeringAngle;
	protected static double frToFrAx; //Distance from front of vehicle to front axle
	protected static double frToReAx; //Distance from front of vehicle to rear axle
	protected static double sensorRange;
	
	protected int VIN;
	protected Position position;
	protected double velocity;
	protected double heading;
	protected double acceleration;
	protected double steeringAngle;
	
	public Vehicle(int VIN, Position position, double velocity, double heading, double acceleration, double steeringAngle){
		this.VIN = VIN;
		this.position = position;
		this.velocity = velocity;
		this.heading = heading;
		this.acceleration = acceleration;
		this.steeringAngle = steeringAngle;
	}
	
	public void move(double dt){
		//System.out.println("x: "+position.x+", y: "+position.y+", velocity: "+velocity+", heading: "+heading+", acceleration: "+acceleration+", steeringAngle: "+steeringAngle);
		position.x += velocity * Math.cos(heading) * dt;
		position.y += velocity * Math.sin(heading) * dt;
		heading += velocity * Math.tan(steeringAngle)/(frToReAx - frToFrAx);
	}
}
